//
//  NoteReviewJobs.swift
//  hello
//
//  Created by 赵康 on 2025/3/31.
//

import Vapor
import Fluent
import Queues
import Redis

struct DailyReviewStatsRefreshJob: AsyncScheduledJob {
    // 每天凌晨1点更新统计数据
    func run(context: QueueContext) async throws {
        context.logger.info("开始更新复习统计数据")
        
        // 1. 获取所有用户ID
        let userIds = try await User.query(on: context.application.db)
            .all(\.$id)
        
        context.logger.info("用户总数: \(userIds.count)")
        
        // 2. 每个用户的统计数据缓存
        for userId in userIds {
            // 清除统计缓存以便下次请求时重新计算
            let statsKey = CacheConfig.KeyBuilder.reviewStats(userID: userId)
            let todayReviewsKey = CacheConfig.KeyBuilder.todayReviews(userID: userId)
            
            let _ = context.application.redis.delete([statsKey, todayReviewsKey])
            
            // 清除所有预测缓存模式
            let predictionPattern = "\(CacheConfig.Prefix.make(.noteReview)):user:\(userId):prediction:*"
            
            // 直接删除匹配的缓存键（不使用scan批量操作）
            // 注意：在Redis模块不支持批量scan的情况下，使用简单的删除
            let _ = context.application.redis.delete(RedisKey(predictionPattern))
            
            context.logger.debug("已清除用户 \(userId) 的复习统计缓存")
        }
        
        context.logger.info("复习统计数据更新完成")
    }
}

